AWS 官方的部署 Python 代码到 Lambda function 上去的两种方法
简介
要把 Python 项目部署到 AWS 的 Lambda function,AWS 官方提供了两种方法:Chalice 和 SAM(AWS Serverless Application Model),当然,其实比较常用的还有第三方的 serverless。
详情
Chalice
Chalice 不仅仅是一个部署工具,它还是一个框架,要是用它需要在 Python 代码里 import 它的包,并在代码里需要的地方使用它的方法做一些操作。
这样才能在用命令 chalice deploy 部署时结合其他配置文件(.chalice/config.json
以及其他需要的 .chalice/policy-xxx.json
) 完成部署。
Chalice 其实应该是调用的 AWS SDK for Python 来实现的,因此它也需要先在本地配置 AWS 的 credentials。
SAM
SAM,全称:AWS Serverless Application Model,由名字一看就知道是一个通用的工具,可以用来部署各种语言(比如 Python、Java 和 nodejs)编写的 serverless 应用。
SAM 则是完全基于 AWS CLI,所以本地需要先安装并配置好 AWS CLI 的环境,让 AWS CLI 能跑起来。
SAM 的工作原理其实最终是通过在 AWS 上的 cloudformation 里创建 stack 来完成部署的。所以,cloudformation 有的缺点他都有。
区别
- Chalice 仅适用于 Python 语言,而且对代码的侵入性比较强。但优点是完全使用 AWS SDK,不依赖于 AWS CLI 和 cloudformation(尤其是后者,比较不好用)
- SAM 更加通用,不侵入代码,但缺点是依赖于 AWS CLI 和 cloudformation(主要是后者)
总结
- 如果是新起的项目,并打算用 Python 开发的,可以考虑选 Chalice
- 如果不是用 Python 开发的,肯定不能用 Chalice,大概率选 SAM
- 如果是已有的项目,现在要部署到 AWS 的 Lambda function,也最好选 SAM
本文由 老杨 原创,转载请注明出处。